#ifndef NTPTIME_H
#define NTPTIME_H

#include <Arduino.h>
#include <WiFi.h>
#include <WiFiUdp.h>

class NTPTime {
   public:
    NTPTime();
    bool begin();
    bool updateTime();
    // 尝试在必要时同步时间，使用 lastNTPAttempt 来避免频繁尝试
    // 返回 true 如果尝试并成功同步；false 表示没有成功（包括未尝试）
    bool attemptSyncIfNeeded(unsigned long &lastNTPAttempt, unsigned long intervalMs = 30000);
    uint8_t getHour();
    uint8_t getMinute();
    uint8_t getSecond();
    String getFormattedTime();
    bool isTimeValid();
    void setTimezone(int offset);  // 设置时区偏移（小时）

   private:
    unsigned long _lastUpdate;
    uint8_t _hour, _minute, _second;
    bool _timeValid;
    int _timezoneOffset;  // 时区偏移（小时）
};

#endif